In machine vision systems (also termed herein “vision systems”), one or more cameras are used to perform vision system process on an object or surface within an imaged scene. These processes can include inspection, decoding of symbology, alignment and a variety of other automated tasks. More particularly, a vision system can be used to inspect a flat work piece passing through an imaged scene. The scene is typically imaged by one or more vision system cameras that can include internal or external vision system processors that operate associated vision system processes to generate results. It is generally desirable to calibrate one or more cameras to enable it/them to perform the vision task(s) with sufficient accuracy and reliability. A calibration plate can be employed to calibrate the cameras.
A calibration plate is often provided as a flat object with distinctive patterns made visible on its surface. The distinctive pattern is generally designed with care and precision, so that the user can easily identify each visible feature in an image of the plate acquired by a camera. Some exemplary patterns include, but are not limited to, dot grids, line grids, or conceivably a honeycomb pattern, a checkerboard of triangles, etc. Characteristics of each visible feature are known from the plate's design, such as the position and/or orientation relative to a reference position and/or coordinate system implicitly defined within the design.
The design of a checkerboard pattern provides certain advantages in terms of accuracy and robustness in performing calibration, even in presence of perspective and lens distortions, partial damage to the pattern, and uneven lighting, among other non-ideal conditions. More particularly, in the two-dimensional (2D) calibration of a stationary object, determining the relative position of individual checkerboard tile corners by edges of the calibration checkerboards is typically sufficient to determine accuracy of the vision system, and as appropriate, provide appropriate correction factors to the camera's processor so that runtime objects are measured in view of such correction factors.
By way of further background on a general understanding of certain calibration principles, for a rigid body, such as a calibration plate, a motion can be characterized by a pair of poses: a starting pose immediately preceding a motion, and an ending pose immediately following the motion—a “pose” herein being defined as a set of numerical values to describe the state of a body, at any one particular instant in time, in some underlying coordinate system—a virtual characterization of the body. For example, in two dimensions, a rigid body can be characterized by three numbers: a translation in X, a translation in Y, and a rotation R. A pose in the context of a calibration plate describes how the calibration plate is presented to the camera(s), when there is relative motion between the camera(s) and the calibration plate. Typically, in a standard so-called “hand-eye calibration”, a calibration plate is presented at a number of different poses to the camera(s), and each camera acquires an image of the calibration plate at each such pose. For machine vision hand-eye calibration, the calibration plate is typically moved to a plurality of predetermined poses at which cameras acquire respective images of the plate. The goal of such hand-eye calibration is to determine the rigid body poses of the camera(s) and calibration plate in the “motion coordinate system”. The motion coordinate system can be defined in a variety of ways. The numbers in the poses (that specify where the calibration plate and/or cameras reside in the space) must be interpreted in an appropriate coordinate system. Once a single unified coordinate system is selected, the poses and motion are described/interpreted in that global coordinate system. This selected coordinate system is often termed the “motion coordinate system.” Typically “motion” is provided by a physical device that can render physical motion, such as a robot arm, or a motion stage, such as a gantry. Note that either the plate can move relative to one or more stationary camera(s) or the camera(s) can move relative to a stationary plate. The controller of such a motion-rendering device employs numerical values (i.e. poses) to command the devices to render any desired motion, and those values are interpreted in a native coordinate system for that device. Note, although any motion coordinate system can be selected to provide a common, global coordinate system relative to the motion-rendering device and camera(s), it is often desirable to select the motion-rendering device's native coordinate system as the overall motion coordinate system.
Hand-eye calibration, thus, calibrates the system to a single motion coordinate system by rendering of motions (either moving the calibration plate or moving the cameras), and acquiring images before and after that motion to determine the effects of such motion on a moving object. By way of further background, this differs from standard “non-hand-eye” calibration in which a machine vision application is generally free of any motion rendering device. In such instances, the camera(s) are typically all calibrated relative to the coordinate system of the calibration plate itself, using one acquired image of the plate, which is in a particular position within the field of view of all cameras. The machine vision calibration software deduces the relative position of each camera from the image of the plate acquired by each camera. This calibration is said to “calibrate cameras to the plate”, whereas a hand-eye calibration is said to “calibrate cameras to the motion coordinate system.”
When the machine vision system employs hand-eye calibration, its software solves poses by correlating the observed motion effect in the images with the commanded motion (for which the commanded motion data is known). Another result of the calibration is a mapping between each pixel position in a camera's image and a physical position in the motion coordinate system, so that after finding a position in the image space, the position in the motion coordinate system can be translated and the motion-rendering device can be commanded to act upon it.
In various manufacturing processes, it is desired to align a flat work piece or more generally a work piece where the features of interest reside in discrete planes that are often parallel. More particularly, in assembly applications, one work piece is aligned to another work piece. One exemplary process entails inserting the cover glass of a cellular telephone or a tablet computer into its housing. Another exemplary process involves print applications in which the work piece is aligned to the process equipment, such as when screen printing of the cover glass of cellular telephones, tablet computers, or flat panel displays. In such manufacturing processes, work pieces must be aligned along the X-Y-axis directions of a reference plane, and also at different heights (i.e. along the orthogonal Z-axis). Some work pieces may possess multiple alignment features at multiple heights. Accurate and precise camera calibration is required for each height of interest to ensure that alignment is properly analyzed and verified by the vision system.
While the use of a three-dimensional (3D) vision system can be employed in such processes, it is contemplated that 2D vision systems can perform adequately where the planes of the object at each height remain parallel. Calibration is a procedure that is often time consuming and must occur within the space constraints of the work area. It is thus desirable in such “2.5D” arrangements, where height varies along otherwise parallel planes (i.e. the object experiences no rotation about the X or Y axes between differing height locations), to provide a system and method for accurately and conveniently calibrating the vision system camera. This system and method should desirably allow a measurement of a plurality of heights to be accurately calibrated-for, with a minimum of calibration plate manipulation and setup.